﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using DECOR.BL.BE;
using DECOR.BL.BC;
using System.Collections.Generic;

namespace DECOR.WebApp
{
    public partial class BuscaReclamos : System.Web.UI.Page
    {
        #region metodos

        private void cargaCombos()
        {
            CombosReclamoBE combos = new CombosReclamoBE();
            List<GenericBE> lst = new List<GenericBE>();
            if (Session["lstStatus"] != null)
                if (lst.Count > 0)
                    lst = (List<GenericBE>)Session["lstStatus"];
                else
                {
                    combos = ReclamoBC.Instance.getCombosReclamo();
                    GenericBE i = new GenericBE();
                    i.Codigo = "-1";
                    i.Descripcion = "";
                    combos.T_STATUS.Add(i);
                    lst = combos.T_STATUS;
                }
            else
            {                
                combos = ReclamoBC.Instance.getCombosReclamo();
                GenericBE i = new GenericBE();
                i.Codigo = "-1";
                i.Descripcion = "";
                combos.T_STATUS.Add(i);
                lst = combos.T_STATUS;
            }
            ddlEstado.DataValueField = "Codigo";
            ddlEstado.DataTextField = "Descripcion";
            ddlEstado.DataSource = lst;
            ddlEstado.DataBind();
            ddlEstado.SelectedValue = "-1";

        }


            private void buscaReclamos(string P_NREC, string P_PEDV, string P_KUNNR, string P_NCLIE, string P_MATNR, DateTime P_FECINI
                                                , DateTime P_FECFIN, string P_USUARIO, DateTime P_FECINI_CON_I, DateTime P_FECINI_CON_F,
                                                  DateTime P_FECFIN_CON_I, DateTime P_FECFIN_CON_F)
            {
                List<ReporteReclamoBE> lst_ReporteReclamo = null;
                lst_ReporteReclamo = ReclamoBC.Instance.getReporteReclamo(P_NREC, P_PEDV, P_KUNNR, P_NCLIE, P_MATNR, P_FECINI
                                                    , P_FECFIN, P_USUARIO.ToUpper(), P_FECINI_CON_I, P_FECINI_CON_F,
                                                       P_FECFIN_CON_I, P_FECFIN_CON_F, "");

                if (!ddlEstado.SelectedValue.Equals("-1"))
                {
                    string sts = ddlEstado.SelectedItem.ToString().Substring(ddlEstado.SelectedItem.ToString().IndexOf(":")+2, ddlEstado.SelectedItem.ToString().Length - (ddlEstado.SelectedItem.ToString().IndexOf(":") + 2)).ToString();

                    lst_ReporteReclamo.RemoveAll(x => !x.STAT.Equals(sts));
                }
                gvReclamos.DataSource = lst_ReporteReclamo;
                gvReclamos.DataBind();
            
            }
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!Page.IsPostBack)
                {
                    cargaCombos();
                    txtFechaInicio.Text = DateTime.Today.AddMonths(-1).ToString("dd/MM/yyyy");
                    txtFechaFin.Text = DateTime.Today.ToString("dd/MM/yyyy");
                    
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }
        }

        protected void ibtnBuscar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                DateTime f1 = DateTime.ParseExact(txtFechaInicio.Text.ToString(), "dd/MM/yyyy", null);
                DateTime f2 = DateTime.ParseExact(txtFechaFin.Text.ToString(), "dd/MM/yyyy", null);

                DateTime f3 = txtFechaII.Text.Equals("") ? DateTime.Parse("01/01/1900") : DateTime.ParseExact(txtFechaII.Text.ToString(), "dd/MM/yyyy", null);
                DateTime f4 = txtFechaIF.Text.Equals("") ? DateTime.Parse("01/01/1900") : DateTime.ParseExact(txtFechaIF.Text.ToString(), "dd/MM/yyyy", null);
                DateTime f5 = txtFechaFI.Text.Equals("") ? DateTime.Parse("01/01/1900") : DateTime.ParseExact(txtFechaFI.Text.ToString(), "dd/MM/yyyy", null);
                DateTime f6 = txtFechaFF.Text.Equals("") ? DateTime.Parse("01/01/1900") : DateTime.ParseExact(txtFechaFF.Text.ToString(), "dd/MM/yyyy", null);

                buscaReclamos(txtNroReclamo.Text, txtPedidoVenta.Text, txtCliente.Text, txtNomCliente.Text,
                                    txtMaterial.Text,f1, f2, txtUsuario.Text, f3, f4,f5,f6);
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }
        }

        protected void gvReclamos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = gvReclamos.Rows[index];
                string numPedido = "";
                if (row != null)
                {
                    numPedido = ((Label)row.FindControl("lblNumPedido")).Text;
                    if (e.CommandName == "Editar" || e.CommandName == "Ver")
                    {
                        string op = Convert.ToString(Session["Operacion"]);
                        if (string.IsNullOrEmpty(op))
                        {
                            DocReclamoBE objPedido = ReclamoBC.Instance.getReclamo(numPedido);
                            if (objPedido != null)
                            {
                                if (e.CommandName == "Editar")
                                    Session["Operacion"] = "editar";
                                else
                                    Session["Operacion"] = "Ver";

                                Session["DocReclamo"] = objPedido;
                                Response.Redirect("MantReclamo.aspx");
                            }
                        }
                        else
                        {
                            Session["Mensaje"] = "Debe cancelar la operación actual para poder visualizar el reclamo.";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Session["Mensaje"] = ex.Message;
            }
            finally
            {
                ((Site)Master).muestraMensajes();
            }
        }
    }
}
